from pydantic import BaseModel, Field
from typing import Optional


class SemanticSplitterConfig(BaseModel):
    """
    用于配置 LlamaIndex SemanticSplitterNodeParser 的动态参数模型。
    """
    buffer_size: int = Field(
        1,
        description="在评估断点之前和之后要考虑的句子数量。增加此值可以提高准确性，但会降低速度。"
    )
    breakpoint_percentile_threshold: int = Field(
        95,
        description="用于确定语义中断点的百分位阈值。值越高，分块越少（仅在最明显的语义中断处分割）。"
    )
    embedding_profile_name: Optional[str] = Field(
        None,
        description="用于计算句子相似度的嵌入模型配置档案的名称。如果为 None，则需要由调用方动态提供。"
    )
    include_prev_next_rel: bool = Field(
        True,
        description="是否在节点之间自动建立 'previous' 和 'next' 的关系链接。"
    )

    class Config:
        frozen = True 